#include "MovimientoCruz.h"

/* Dados un valor de incremento o decremento para X e Y, una pieza y una lista para
 * almacenar los movimientos posibles, explora el tablero y agrega cada movimiento posible a la lista.*/

void MovimientoCruz::explorar(int incOrDecX,
					           int incOrDecY,
							   const Tablero& tablero,
							   const Posicion& posInicial,
							   Lista* movimientos) const {
	bool terminarExploracion = false;
	Posicion aux = posInicial;
	while (!terminarExploracion) {
		aux.incOrDecX(incOrDecX);
		aux.incOrDecY(incOrDecY);
		if (aux.estaDentroDeTabla()) {
			if (tablero.casillaNoOcupada(aux))
				movimientos->agregar(aux.intXToChar(), aux.intYToChar());
			else {
				if(tablero.piezaContrario(posInicial, aux)) {
					movimientos->agregar(aux.intXToChar(), aux.intYToChar());
				}
				terminarExploracion = true;
			}
		}
		else
			terminarExploracion = true;
	}
}

MovimientoCruz::~MovimientoCruz() {
}
